#include <iostream>
using namespace std;
// void my_swap(int *a,int *b){
//     int temp = *a;
//     *a = *b;
//     *b = temp;
//     // cout<<"swap "<<a<<" "<<b<<endl;
//     return;
// }
// void my_swap(string *a,string *b){
//     string temp = *a;
//     *a = *b;
//     *b = temp;
//     // cout<<"swap "<<a<<" "<<b<<endl;
//     return;
// }

template <typename T> void my_swap(T *a,T *b){
    T temp = *a;
    *a = *b;
    *b = temp;
    return;
}

int main(){
    int a = 1,b = 2;
    // int *ita, *itb;
    // ita = &a; //a的地址赋值给ita &是取地址符号
    // itb = &b;
    // cout<<ita<<" "<<itb<<endl;
    // cout<<*ita<<" "<<*itb<<endl;
    // *ita = 3;//等价于a = 3
    // *itb = 4;//等价于b = 4
    // cout<<a<<" "<<b<<endl;
    string c = "hello",d = "world";
    my_swap(&a,&b);
    cout<<a<<" "<<b<<endl;
    my_swap(&c,&d);
    cout<<c<<" "<<d<<endl;
    return 0;
}